/**
 * @author Zorin Kirill - http://quaint.su
 * @class Ext.ux.form.HtmlEditor.Uploader
 * @extends Ext.util.Observable
 * <p>Plugin for uploading, browse and insert links to images in text</p>
 */
Ext.ns('Ext.ux.form.HtmlEditor');

getPicturesBrowser=function(){
	var w = Ext.WindowMgr.get('pictures-browser');
	if (!w) {
		var OnSubmit = function(){
			upFrm.getForm().submit({
				url: '/admin/pictures',
				waitMsg: 'Загрузка файла...',
				success: function(fp, xhr){
					if(xhr.result.success)
						view.getStore().reload();
					else
						Ext.Msg.alert('Success', 'Файл загрузить не удалось');
				},
				failure: function() {
					Ext.Msg.alert('Error', 'Файл загрузить не удалось');
				}
			});
		};
		var upFrm = new Ext.form.FormPanel({
			fileUpload: true,
			//width: 400,
			//autoHeight: true,
			height: 80,
			anchor: '100%',
			layout: 'fit',
			border: false,
			bodyStyle: 'background-color: #DFE8F6; padding: 5px;',
			defaults: {allowBlank: false,msgTarget: 'side'},
			items: {
				xtype: 'fieldset',
				layout:'column',
				autoHeight: true,
				title: 'Загрузка файла',
				items:[{
                    columnWidth:.8,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
					layout:'fit',
                    items:{
						xtype: 'fileuploadfield',
						name: 'newfile',
						emptyText: 'Выберите файл',
						hideLabel: true,
						buttonText: '',
						width: 500,
						buttonCfg: {iconCls: 'upload-icon'}
				}},
				{
                    columnWidth:.2,
					layout:'fit',
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items:{xtype:'button',text: 'Закачать', handler:OnSubmit}
				}]
			}
		});
		var view = new Ext.DataView({
			itemSelector: 'div.thumb-wrap',
			style:'overflow:auto',
			multiSelect: true,
			//autoHeight: true,
			overClass: 'x-view-over',
			emptyText: 'Нет изображений для отображения',
			store: new Ext.data.JsonStore({
				root: 'data',
				proxy: new Ext.data.HttpProxy({url: '/admin/pictures',method: 'GET'}),
				fields: ['name', 'url', 'width', 'height']
			}),
			tpl: new Ext.XTemplate(
				'<tpl for=".">',
					'<div class="thumb-wrap" id="{name}">',
					'<div class="thumb"><img src="{url}" title="{name}"></div>',
					'<span>{name}</span></div>',
				'</tpl>',
				'<div class="x-clear"></div>'
			),
			//width: 500,
			//height: 400
			anchor: '100% -80',
			//border: true,
		});
		var OnOK=function(){
			var recs = view.getSelectedRecords();
			w.fireEvent('onfilesselected', recs);
			w.hide();
		}
		var OnCancel=function(){w.hide();};
		w = new Ext.Window({
			id: 'pictures-browser',
			modal: true,
			title: 'Изображения',
			closeAction: 'hide',
			//autoHeight:true,
			//height: 500,
			height: 450,
			width: 600,
			plain: true,
			frame: true,
			//layout: 'fit',
			layout:'anchor',
			buttons: [{text: 'OK',handler: OnOK}
				,{text: 'Отмена',handler: OnCancel}],
			items: [view,upFrm]
		});
		w.addEvents('onfilesselected');
	}
	w.get(0).getStore().load();
	return w;
}

Ext.ux.form.HtmlEditor.Uploader = Ext.extend(Ext.util.Observable, {
	/*constructor: function(config) {
		Ext.ux.form.HtmlEditor.Uploader.superclass.constructor.call(this, config);
	},*/

	init: function(cmp){
        this.cmp = cmp;
        this.cmp.on('render', this.onRender, this);
    },
	
	onRender: function() {
		var OnHide = function(){
            var w = getPicturesBrowser();
            w.removeListener('onfilesselected', OnFiles,this);
            w.removeListener('beforehide', OnHide, this);
        }
		var OnFiles = function(r){
			var html = '';
			for(var i = 0; i < r.length; i++) {
				var d = r[i].data;
				html += '<img style="float:left;" src="'+d.url+'" title="'+d.name+'" width="'+d.width+'" height="'+d.height+'" />';
			}
			this.cmp.insertAtCursor(html);
		}
		var showWnd = function(){
			var w = getPicturesBrowser();
			w.addListener('onfilesselected', OnFiles, this);
            w.addListener('beforehide', OnHide, this);
			w.show();
		}
		
		this.cmp.getToolbar().addButton({iconCls: 'x-edit-image', handler: showWnd, scope: this});
		return;
	}
});